home *** CD-ROM | disk | FTP | other *** search
- /*
- HSV to 32k 変換関数
- おこめ
-
- h:(0,1535) s,v:(0,255)
- ret:16bitGRB
-
- 参考:Oh!FM 1989.9 特集
- 爆走!! 趣味のC言語ライブラリ
- Part 6 あれやこれやの
- MISCライブラリ 歩野零一
- */
-
- int HSVto32k(int h, int s, int v)
- {
- int i,f, m,n,k;
- int r,g,b;
- i = (h / 256) % 6 ; f = ( h % 256 ) ;
- m = ( (v+1) * ( 255 - s ) ) /256 ;
- n = ( (v+1) * ( 255 - ( (s+1) * f ) /256 ) ) /256 ;
- k = ( (v+1) * ( 255 - ( (s+1) * ( 255 - f ) ) /256 )) /256 ;
- switch (i) {
- case 0: r = v ; g = k ; b = m ; break ;
- case 1: r = n ; g = v ; b = m ; break ;
- case 2: r = m ; g = v ; b = k ; break ;
- case 3: r = m ; g = n ; b = v ; break ;
- case 4: r = k ; g = m ; b = v ; break ;
- case 5: r = v ; g = m ; b = n ; break ;
- default: return ( -1 ) ;
- }
- return ( ((g & 0xF8)<<7) + ((r & 0xF8)<<2) + (b>>3) );
- }
-